package QianFeng04;

/**
 * 递归算法
 * 是一种直接或者间接调用自身算法的过程
 * 1、递归必须要有出口
 * 2、递归内存消耗大，容易发生内存溢出
 * 3、层次调用越多，越危险
 **/
public class Test14 {
    public static void main(String[] args) {
        System.out.println(Factorial1(5));
    }

    //递归阶乘方法
    public static int Factorial2(int num) {
        if(num == 1) return 1;
        return num * Factorial2(num - 1);
    }
    //普通阶乘方法
    public static int Factorial1(int num) {
        int result = num;
        int i = num - 1;
        do {
            result = result * i;
            i--;
        } while (i > 1);
        return result;
    }
}

class Pig{

}
